package com.data.security;

import java.util.ArrayList;
import java.util.List;

import com.data.security.control.ArchivoTransBD;
import com.data.security.modelo.AdaptadorArchivos;
import com.data.security.modelo.Archivo;
import com.data.security.modelo.Nube;
import com.data.security.modelo.ParcelArchivo;
import com.dropbox.sync.android.DbxFileInfo;
import com.dropbox.sync.android.DbxPath;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

public class InicioActivity extends Activity {

	private ListView listaArchivos;
	private ArrayList<Archivo> archivosActuales;
	private AdaptadorArchivos adaptador;
	private ArchivoTransBD archivador;
	private Nube nube;
	private Thread hiloSinck;
	private static boolean IS_ON;
	private TextView texto_nohay;


	protected void onCreate(Bundle saved) {
		super.onCreate(saved);
		cargarRutas();
		setContentView(R.layout.activity_inicio);
		cargarViews();
		
		if (Preferencias.getTutorialVisto(getApplicationContext())<3){
			
			startActivity(new Intent(getApplicationContext(),
					Tutorial_Activity.class));
			
		}
		
		listaArchivos.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {

				Intent intencion = new Intent(getApplicationContext(),
						VistaItemActivity.class);
				intencion.putExtra("archivo", new ParcelArchivo(
						archivosActuales.get(arg2)));
				startActivity(intencion);

			}

		});
		
		sincronizar();

	}

	@Override
	protected void onResume() {
		super.onResume();
		IS_ON=true;
		listarArchivos();

	}

	private void listarArchivos() {
		runOnUiThread(new Runnable() {

			@Override
			public void run() {
				
				cargarArchivos(); // cargo los archivos
				setAdapter(); // los pongo en el listview
				

			}
		});

	}

	private void sincronizar() {
		
		
		archivador = new ArchivoTransBD(getApplicationContext());
		
		
		nube = new Nube(this);

		if (nube.estaEnlazado()) {
			hiloSinck=new Thread(new Runnable() {

				@Override
				public void run() {

					List<DbxFileInfo> listaDbx;
					listaDbx = nube.descargarArchivos(new DbxPath(Nube.PATH),
							null);
					ArrayList<Archivo> listaLocal;
					listaLocal = archivador.getComparacionNube();

					for (int i = 0; i < listaLocal.size(); i++) {
						boolean bandera = false;
						Archivo local;
						local = listaLocal.get(i);
						for (int k = 0; k < listaDbx.size(); k++) {
							String auxDbx;
							auxDbx = listaDbx.get(k).path.getName();
							if (local.getNombreArchivo().equalsIgnoreCase(
									auxDbx)) {
								bandera = true;
								if (listaDbx.get(k).size==0){
									local.setErrorConNube(true);
								}
							}
						}

						if (!bandera) {
							local.setEnNube(Archivo.NO);
							if (archivador != null) {
								archivador.setArchivo(local);
								archivador.update();
							}
						}

					}
					if(!IS_ON){
						archivador.terminar();
					}else{
						listarArchivos();
					}
				}
			});
			hiloSinck.start();

		} else {

			nube.enlazar();
		}

	}

	private void cargarArchivos() {
		if (archivosActuales != null) {
			archivosActuales.clear();
		}
		archivosActuales = archivador.getTodos();
		if(archivosActuales.size()==0){
			listaArchivos.setVisibility(View.INVISIBLE);
			texto_nohay.setVisibility(View.VISIBLE);
		}else{
			if(listaArchivos.getVisibility()==View.INVISIBLE){
				listaArchivos.setVisibility(View.VISIBLE);
				texto_nohay.setVisibility(View.INVISIBLE);
			}
		}

	}

	private void setAdapter() {
		adaptador = new AdaptadorArchivos(getApplicationContext(),
				archivosActuales);
		listaArchivos.setAdapter(adaptador);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		getMenuInflater().inflate(R.menu.inicio_menu, menu);
		return true;
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		super.onMenuItemSelected(featureId, item);

		switch (item.getItemId()) {
		case R.id.item_encriptar:
			Intent encriptar = new Intent(getApplicationContext(),
					EncriptarActivity.class);
			startActivity(encriptar);
			break;
		case R.id.item_acercade:
			Intent desencriptar = new Intent(getApplicationContext(),
					AcercaDeActivity.class);
			startActivity(desencriptar);
			break;
		case R.id.item_cargar:
			/*Intent nube = new Intent(getApplicationContext(),
					ArchivosNubeActivity.class);
			startActivity(nube);*/
			Intent nube = new Intent(getApplicationContext(),
					CarpetasActivity.class);
			startActivity(nube);
			break;
		/*case R.id.item_subir:
			Intent nubeSubir = new Intent(getApplicationContext(),
					SubirActivity.class);
			startActivity(nubeSubir);
			break;
		case R.id.item_cerrar:
			Preferencias.setRegistro(getApplicationContext(), false);
			startActivity(new Intent(getApplicationContext(),
					LoginActivity.class));
			this.finish();
			break;*/
		case R.id.item_contrasena:
			startActivity(new Intent(getApplicationContext(),
					CambioActivity.class));
			break;
		case R.id.item_configuracion:
			startActivity(new Intent(getApplicationContext(),
					ConfigActivity.class));
			break;
		}

		return true;

	}

	/**
	 * Carga los views del layout que le corresponde.
	 */
	private void cargarViews() {
		listaArchivos = (ListView) findViewById(R.id.lista_archivos);
		texto_nohay=(TextView)findViewById(R.id.texto_nohay);
		texto_nohay.setVisibility(View.INVISIBLE);

	}
	
	/**
	 * Carga los valores para las rutas de la apliacion.
	 */
	private void cargarRutas(){
		
		if (Archivo.rutaEncriptado==null){
		   Archivo.rutaEncriptado=getExternalFilesDir(null).getAbsolutePath()+"/encriptados";
		}
		if(Archivo.rutaDesencriptado==null){
			Archivo.rutaDesencriptado="/sdcard/desencriptados";	
		}
		
	}

	
	@Override
	protected void onPause() {
		super.onPause();
		IS_ON=false;
		if (hiloSinck!=null && !hiloSinck.isAlive()){
			archivador.terminar();
		}
<<<<<<< .mine
		
			/*AlertDialog.Builder ventana=new AlertDialog.Builder(this);
			ventana.setTitle(getString(R.string.app_name));
			ventana.setMessage(getString(R.string.textonube));
			ventana.setPositiveButton("OK",null);
			ventana.setNegativeButton("No", new OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					
					startActivity(new Intent(getApplicationContext(),InicioActivity.class));
					
					
				}
			});
			ventana.create().show();*/
		
=======
		this.finish();
>>>>>>> .r35
	}

	
	
	
	
	
	
	

	
	
	
}
